/*
 * @Descripttion: 
 * @Author: liuYaoYu
 * @Date: 2021-12-13 11:46:14
 * @LastEditors: liuYaoYu
 * @LastEditTime: 2021-12-13 20:25:14
 */
package main
import (
	"fmt"
	"strconv"
	"strings"
)
func main(){
	//1- len len是按照 占用的字节 算的
	// str := "string"// 6
	str := "string北"// 9 这个 因为 utf-8 汉字 占用三个字节
	fmt.Println("str length=",len(str))
	// 2-遍历 字符串
	// 切片  遍历字符串
	str2:="hello 北京" // 如果我们需要处理中文 我们需要转化为rune的切片
	f:=[]rune(str2)
	for i:=0;i<len(f);i++{
		fmt.Printf("str2 length= %c\n",f[i])
	}
	for index,val:=range str2{
		fmt.Println("========>",index,val)
	}
	//3-字符串转整数 n,err : = strconv.Atoi("12")
	n,err := strconv.Atoi("123")
	fmt.Println(n,err)
	// 4-整数转字符串
	// Itoa
	num:=100
	fmt.Printf("num转字符串的值为%c 类型是%T\n",strconv.Itoa(num),strconv.Itoa(num))
	// 5-字符串转 byte 切片 由于 byte输出的是 utf-8的编码
	var bytes = []byte("hello world")
	fmt.Println(bytes)
	// 6-byte字符吗转 字符串
	var c = string([]byte{97,98,99})
	fmt.Println(c)
	// 7-  10进制转 2，8，16进制
	fmt.Println("123对应的二进制是",strconv.FormatInt(123,2))
	fmt.Println("123对应的八进制是",strconv.FormatInt(123,8))
	fmt.Println("123对应的十六进制是",strconv.FormatInt(123,16))
	// 8-查找字符串是否在指定的字符串中
	v:=strings.Contains("ashdajks","ash")
	fmt.Println(v)
	// 9-统计一个字符串中 有几个重复的 这个字符子串
	nums:=strings.Count("cehesse","se")
	fmt.Println(nums)
	// 10- 不区分大小写的字符判断
	//判断两个utf-8编码字符串（将unicode大写、小写、标题三种格式字符视为相同）是否相同。
	fmt.Println(strings.EqualFold("abc","Abc"))
	// 11-  index indexOf 的实现
	fmt.Println(strings.Index("NLP_nb","nb"))
	// 12 - 查找字符串中最后出现的位置
	fmt.Println(strings.LastIndex("abcccccccc","c"))
	// 13-字符串中的替换
	//返回将s中前n个不重叠old子串都替换为new的新字符串，如果n<0会替换所有old子串。
	fmt.Println(strings.Replace("sahdkjsss","s","d",-1))
	// 14- 按照指定的某个字符，为分割标识，将一个字符串拆分成字符串数组：
	strArr:=strings.Split("hellow,world,ok",",")
	for i:=0;i<len(strArr);i++{
		fmt.Printf("str[%v]=%v\n",i,strArr[i])
	}
	fmt.Printf("strArr=%v\n",strArr)
	//15 - 所有的字符转大小写
	fmt.Println(strings.ToLower("goLang Hello"))// 小写
	fmt.Println(strings.ToUpper("goLang Hello"))// 大写
	// 16- 去除字符串 左右两边的空格
	str =strings.TrimSpace(" ni hao ")
	fmt.Println(str)
	// 17-将字符两边的 ！号去掉
	fmt.Println(strings.Trim("!!! Achtung! Achtung! !!!","!"))
	//18-判断字符是以什么开头的
	fmt.Println(strings.HasPrefix("asd","a"))
	// 19-判断是否已什么结尾
	fmt.Println(strings.HasSuffix("asd","d"))
}